Change Set
Infrastructure as Codeツールにおいて、実際に変更を適用する前に「何が変わるか」をプレビューする仕組み。
terraform plan(Terraform)やaws cloudformation create-change-set(CloudFormation)がこれに相当する。変更内容を事前に確認してから適用するという、本番環境の安全な運用に不可欠なプラクティスだ。
確認できる情報
- 追加されるリソース
- 変更されるリソース(変更内容の詳細)
- 削除されるリソース
- 置換(Replacement)が発生するリソース ← 特に重要
「置換」とは、リソースを更新するのではなく削除して再作成する操作を指す。一部のプロパティ変更は置換が必須になる(例:EC2のAMI IDを変更するとインスタンスが置換される)。置換はダウンタイムやデータ損失につながる可能性があるため、事前に把握することが重要だ。
CloudFormationでのChange Set
# Change Setの作成
aws cloudformation create-change-set \
--stack-name my-stack \
--template-body file://template.yaml \
--change-set-name my-changes
# 内容の確認
aws cloudformation describe-change-set \
--stack-name my-stack \
--change-set-name my-changes
# 問題なければ実行
aws cloudformation execute-change-set \
--stack-name my-stack \
--change-set-name my-changes
Drift-aware Change Sets
従来のChange Setは「前回デプロイしたテンプレート」と「新しいテンプレート」の2者比較だった。2025年に導入されたDrift-aware Change Setsは「新テンプレート」「前回テンプレート」「実際のインフラ状態」の3者を比較する。
ドリフト検出と組み合わせることで、手動変更が加えられた環境でもより正確な変更プレビューが可能になった。
CI/CDパイプラインへの統合
テンプレート変更のPR
→ Change Set自動作成
→ レビュー・承認
→ Change Set実行
変更内容を人間がレビューしてから適用するフローを組み込むことで、インフラ変更の安全性を高められる。
関連
- Infrastructure as Code - Change Setが属する文脈
- CloudFormationスタック - Change Setの対象
- ドリフト検出 - Drift-aware Change Setsとの連携
- CI-CDパイプライン - Change SetをCI/CDに組み込む
- フェイルセーフ - 事前確認による安全設計の思想